-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add repo URL support and testing for cocoapods #153
Add repo URL support and testing for cocoapods #153
Conversation
Reference: package-url#143 Signed-off-by: John M. Horan <johnmhoran@gmail.com>
src/packageurl/contrib/purl2url.py
Outdated
purl_data = PackageURL.from_string(purl) | ||
name = purl_data.name | ||
|
||
if name: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if name: | |
if not name: | |
return | |
return f"https://cocoapods.org/pods/{name}" |
Reference: package-url#143 Signed-off-by: John M. Horan <johnmhoran@gmail.com>
@TG1999 Thank you for your comments. I've just pushed my responsive updates.
Note: these changes do not handle exceptions raised by other supported PURLs with no name, e.g., Question: since this output is consumed by the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
@TG1999 You asked me to remove the two print statements I added to
Or are we perhaps contemplating something like this:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Do not swallow exception silently. Best is to let them propagate as-is when the purl is not valid.
src/packageurl/contrib/purl2url.py
Outdated
@@ -75,7 +76,12 @@ def get_download_url(purl): | |||
return download_url | |||
|
|||
# Fallback on the `download_url` qualifier when available. | |||
purl_data = PackageURL.from_string(purl) | |||
purl_data = None |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure we want to swallow an exception here. If the purl is invalid, let the error bubble up and do not catch the exception.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @pombredanne -- I have updated get_download_url()
to the following (actually, this reverts the code to its state before I added a try/except):
def get_download_url(purl):
"""
Return a download URL inferred from the `purl` string.
"""
download_url = _get_url_from_router(download_router, purl)
if download_url:
return download_url
# Fallback on the `download_url` qualifier when available.
purl_data = PackageURL.from_string(purl)
return purl_data.qualifiers.get("download_url", None)
I also removed "pkg:cocoapods/": [],
from test_purl2url_get_inferred_urls()
because otherwise the test fails w/o the try/except I've removed.
src/packageurl/contrib/purl2url.py
Outdated
""" | ||
purl_data = None | ||
name = None | ||
try: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above: if the purl is invalid, let the error bubble up and do not catch the exception.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pombredanne I'm not sure I understand your comments but hoping this is what you suggested. I've removed the try/except as well as this if condition:
if not name:
return
and the updated build_cocoapods_repo_url()
looks like this:
@repo_router.route("pkg:cocoapods/.*")
def build_cocoapods_repo_url(purl):
"""
Return a CocoaPods repo URL from the `purl` string.
"""
purl_data = PackageURL.from_string(purl)
name = purl_data.name
return name and f"https://cocoapods.org/pods/{name}"
I also removed "pkg:cocoapods/": None,
from test_purl2url_get_repo_url()
because, having removed the try/except, that test fails on "pkg:cocoapods/": None,
(which I'd added only to test the try/except).
src/packageurl/contrib/purl2url.py
Outdated
@@ -24,6 +24,7 @@ | |||
# Visit https://github.com/package-url/packageurl-python for support and | |||
# download. | |||
|
|||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. I've deleted this:
# Visit https://github.com/package-url/packageurl-python for support and
# download.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That comment also appears at the top of /packageurl-python/tests/contrib/test_purl2url.py
-- I've deleted it there as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant to remove the empty line.
src/packageurl/contrib/purl2url.py
Outdated
|
||
if not name: | ||
return | ||
return f"https://cocoapods.org/pods/{name}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use the simpler shortcut:
return f"https://cocoapods.org/pods/{name}" | |
return name and f"https://cocoapods.org/pods/{name}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated as shown in the comment just above ^.
…url#143 Reference: package-url#143 Signed-off-by: John M. Horan <johnmhoran@gmail.com>
@pombredanne @TG1999 I've just committed and pushed my changes in response to @pombredanne's recent comments. Please take a look when you can. |
Reference: package-url#143 Signed-off-by: John M. Horan <johnmhoran@gmail.com>
@pombredanne I've restored the support/download URL comments we discussed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Looking good. Merging.
@@ -134,7 +136,10 @@ def test_purl2url_get_inferred_urls(): | |||
"https://gitlab.com/tg1999/firebase", | |||
"https://gitlab.com/tg1999/firebase/-/archive/1a122122/firebase-1a122122.tar.gz", | |||
], | |||
"pkg:pypi/sortedcontainers@2.4.0": ["https://pypi.org/project/sortedcontainers/2.4.0/"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you restore the formatting as it was? The black tests are failing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pombredanne I've turned off Black (it had been set in 2 VSCode locations and turned off in just one) and restored the original format for that test entry you identified. Committed and pushed just now.
Reference: package-url#143 Signed-off-by: John M. Horan <johnmhoran@gmail.com>
@pombredanne Just confirming that this PR is ready for your re-review when you have the time. |
@johnmhoran This looks good, merging. |
Reference: #143
@TG1999 This replaces the recently-closed PR 151. I look forward to your comments and questions.